public class Test1 {
    public static void main(String[] args) {
        int a = 10;

        Integer A1 = a;//自动装包
        Integer A2 = new Integer(a);
        Integer A3 = Integer.valueOf(a);

        int b1 = A1;//自动拆包
        int b2 = A1.intValue();

        System.out.println(b1);
        System.out.println(b2);

        System.out.println("=====");

        System.out.println(A1.intValue());
        System.out.println(A2.intValue());
        System.out.println(A3.intValue());

        System.out.println("=====");

        System.out.println(A1 == A2);//false
        System.out.println(A1 == A3);//true
        System.out.println(A2 == A3);//false

        //装包时调用的valueOf方法，在-128到127之间直接返回cache数组中的引用
        //不在这个范围里的会new 一个新的对象
        //所以A1与A3指向同一个对象
        //而A2直接new一个对象，所以与A1,A2不同
    }
}
